package org.fizz.viper;

import java.net.Authenticator;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.SocketAddress;

/**
 * HTTP代理
 * @author FIZZ
 * @version viper-1.0, 2014-4-17
 * @since 1.0
 */
public class ViperHTTPProxy extends Proxy {

	
	private ViperHTTPProxy(Type type, SocketAddress sa) {
		super(type, sa);
	}
	/**
	 * 返回HTTP代理的对象
	 * @param ipAddress 代理服务器的IP地址
	 * @param port 代理服务器的端口
	 * @param proxyAuth 代理认证器
	 * @return HTTP代理的对象
	 * @since 1.0
	 */
	public static ViperHTTPProxy getInstance(String ipAddress, int port, ViperProxyAuthen proxyAuth){
		SocketAddress sa = new InetSocketAddress(ipAddress, port); 
		if(proxyAuth != null){
			Authenticator.setDefault(proxyAuth);
		}
		return new ViperHTTPProxy(Proxy.Type.HTTP, sa);
	}
	
	/**
	 * 返回HTTP代理的对象
	 * @param ipAddress 代理服务器的IP地址
	 * @param port 代理服务器的端口
	 * @return HTTP代理的对象
	 * @since 1.0
	 */
	public static ViperHTTPProxy getInstance(String ipAddress, int port){
		return getInstance(ipAddress, port, null);
	}
	
	/**
	 * 返回HTTP代理的对象
	 * @param ipAddress 代理服务器的IP地址
	 * @param port 代理服务器的端口
	 * @param username 认证代理服务器的用户名
	 * @param password 认证代理服务器的密码
	 * @return HTTP代理的对象
	 * @since 1.0
	 */
	public static ViperHTTPProxy getInstance(String ipAddress, int port,
			String username, String password){
		return getInstance(ipAddress, port, new ViperProxyAuthen(username,password));
	}

}
